home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / AIncludes / SANEMacs.a < prev    next >
Encoding:
Text File  |  1993-11-30  |  27.9 KB  |  1,573 lines  |  [TEXT/MPS ]

  1. ;    File:        SANEMacs.a
  2. ;
  3. ;    Copyright:    © 1983-1993 by Apple Computer, Inc.
  4. ;                All rights reserved.
  5. ;
  6. ;    Version:    System 7.1• for ETO #13
  7. ;    Created:    Tuesday, March 30, 1993 18:00
  8. ;    Modified:    Tue, Nov 30, 1993 01:18:15
  9. ;
  10. ;___________________________________________________________________________
  11.  
  12.     IF &TYPE('__INCLUDINGSANEMACS881__') <> 'UNDEFINED' THEN
  13.         aerror    'Can''t include SANEMacs.a and SANEMacs881.a in same assembly!'
  14.     ELSEIF &TYPE('__INCLUDINGSANEMACS__') = 'UNDEFINED' THEN
  15. __INCLUDINGSANEMACS__    SET    1
  16.  
  17. FOADD            EQU         $0000                    ; add
  18. FOSUB            EQU         $0002                    ; subtract
  19. FOMUL            EQU         $0004                    ; multiply
  20. FODIV            EQU         $0006                    ; divide
  21. FOCMP            EQU         $0008                    ; compare, no exception from unordered
  22. FOCPX            EQU         $000A                    ; compare, signal invalid if unordered
  23. FOREM            EQU         $000C                    ; remainder
  24. FOZ2X            EQU         $000E                    ; convert to extended
  25. FOX2Z            EQU         $0010                    ; convert from extended
  26. FOSQRT            EQU         $0012                    ; square root
  27. FORTI            EQU         $0014                    ; round to integral value
  28. FOTTI            EQU         $0016                    ; truncate to integral value
  29. FOSCALB         EQU         $0018                    ; binary scale
  30. FOLOGB            EQU         $001A                    ; binary log
  31. FOCLASS         EQU         $001C                    ; classify
  32. ; UNDEFINED EQU $001E
  33.  
  34. FOSETENV        EQU         $0001                    ; set environment
  35. FOGETENV        EQU         $0003                    ; get environment
  36. FOSETHV         EQU         $0005                    ; set halt vector
  37. FOGETHV         EQU         $0007                    ; get halt vector
  38. FOD2B            EQU         $0009                    ; convert decimal to binary
  39. FOB2D            EQU         $000B                    ; convert binary to decimal
  40. FONEG            EQU         $000D                    ; negate
  41. FOABS            EQU         $000F                    ; absolute
  42. FOCPYSGN        EQU         $0011                    ; copy sign
  43. FONEXT            EQU         $0013                    ; next-after
  44. FOSETXCP        EQU         $0015                    ; set exception
  45. FOPROCENTRY     EQU         $0017                    ; procedure entry
  46. FOPROCEXIT        EQU         $0019                    ; procedure exit
  47. FOTESTXCP        EQU         $001B                    ; test exception
  48. ; UNDEFINED EQU $001D
  49. ; UNDEFINED EQU $001F
  50.  
  51.  
  52. ;———————————————————————————————————————————————————————————
  53. ; Operand format masks.
  54. ;———————————————————————————————————————————————————————————
  55. FFEXT            EQU         $0000                    ; extended -- 80-bit float
  56. FFEXT96            EQU            $0020                    ; extended -- 96-bit float
  57. FFDBL            EQU         $0800                    ; double -- 64-bit float
  58. FFSGL            EQU         $1000                    ; single -- 32-bit float
  59. FFINT            EQU         $2000                    ; integer -- 16-bit integer
  60. FFLNG            EQU         $2800                    ; long int -- 32-bit integer
  61. FFCOMP            EQU         $3000                    ; comp -- 64-bit integer
  62.  
  63. ;———————————————————————————————————————————————————————————
  64. ; Operations: operand addresses should already be on
  65. ; the stack, with the destination address on top. The
  66. ; suffix X, D, S, C, I, or L determines the format of the
  67. ; source operand -- extended, double, single, comp,
  68. ; integer, or long integer, respectively; the destination
  69. ; operand is always extended.
  70. ;———————————————————————————————————————————————————————————
  71.  
  72.  
  73. ;———————————————————————————————————————————————————————————
  74. ; Addition.
  75. ;———————————————————————————————————————————————————————————
  76. ; 80-bit extended format
  77.                 MACRO
  78.                 FADDX
  79.                 MOVE.W        #FFEXT+FOADD,-(SP)
  80.                 _FP68K
  81.                 ENDM
  82.  
  83.                 MACRO
  84.                 FADDD
  85.                 MOVE.W        #FFDBL+FOADD,-(SP)
  86.                 _FP68K
  87.                 ENDM
  88.  
  89.                 MACRO
  90.                 FADDS
  91.                 MOVE.W        #FFSGL+FOADD,-(SP)
  92.                 _FP68K
  93.                 ENDM
  94.  
  95.                 MACRO
  96.                 FADDC
  97.                 MOVE.W        #FFCOMP+FOADD,-(SP)
  98.                 _FP68K
  99.                 ENDM
  100.  
  101.                 MACRO
  102.                 FADDI
  103.                 MOVE.W        #FFINT+FOADD,-(SP)
  104.                 _FP68K
  105.                 ENDM
  106.  
  107.                 MACRO
  108.                 FADDL
  109.                 MOVE.W        #FFLNG+FOADD,-(SP)
  110.                 _FP68K
  111.                 ENDM
  112.  
  113. ; 96-bit extended format
  114.                 MACRO
  115.                 FADDX96
  116.                 MOVE.W        #FFEXT96+FOADD,-(SP)
  117.                 _FP68K
  118.                 ENDM
  119.  
  120.                 MACRO
  121.                 FADDD96
  122.                 MOVE.W        #FFDBL+FFEXT96+FOADD,-(SP)
  123.                 _FP68K
  124.                 ENDM
  125.  
  126.                 MACRO
  127.                 FADDS96
  128.                 MOVE.W        #FFSGL+FFEXT96+FOADD,-(SP)
  129.                 _FP68K
  130.                 ENDM
  131.  
  132.                 MACRO
  133.                 FADDC96
  134.                 MOVE.W        #FFCOMP+FFEXT96+FOADD,-(SP)
  135.                 _FP68K
  136.                 ENDM
  137.  
  138.                 MACRO
  139.                 FADDI96
  140.                 MOVE.W        #FFINT+FFEXT96+FOADD,-(SP)
  141.                 _FP68K
  142.                 ENDM
  143.  
  144.                 MACRO
  145.                 FADDL96
  146.                 MOVE.W        #FFLNG+FFEXT96+FOADD,-(SP)
  147.                 _FP68K
  148.                 ENDM
  149.  
  150. ;———————————————————————————————————————————————————————————
  151. ; Subtraction.
  152. ;———————————————————————————————————————————————————————————
  153. ; 80-bit extended format
  154.                 MACRO
  155.                 FSUBX
  156.                 MOVE.W        #FFEXT+FOSUB,-(SP)
  157.                 _FP68K
  158.                 ENDM
  159.  
  160.                 MACRO
  161.                 FSUBD
  162.                 MOVE.W        #FFDBL+FOSUB,-(SP)
  163.                 _FP68K
  164.                 ENDM
  165.  
  166.                 MACRO
  167.                 FSUBS
  168.                 MOVE.W        #FFSGL+FOSUB,-(SP)
  169.                 _FP68K
  170.                 ENDM
  171.  
  172.                 MACRO
  173.                 FSUBC
  174.                 MOVE.W        #FFCOMP+FOSUB,-(SP)
  175.                 _FP68K
  176.                 ENDM
  177.  
  178.                 MACRO
  179.                 FSUBI
  180.                 MOVE.W        #FFINT+FOSUB,-(SP)
  181.                 _FP68K
  182.                 ENDM
  183.  
  184.                 MACRO
  185.                 FSUBL
  186.                 MOVE.W        #FFLNG+FOSUB,-(SP)
  187.                 _FP68K
  188.                 ENDM
  189.  
  190. ; 96-bit extended format
  191.                 MACRO
  192.                 FSUBX96
  193.                 MOVE.W        #FFEXT96+FOSUB,-(SP)
  194.                 _FP68K
  195.                 ENDM
  196.  
  197.                 MACRO
  198.                 FSUBD96
  199.                 MOVE.W        #FFDBL+FFEXT96+FOSUB,-(SP)
  200.                 _FP68K
  201.                 ENDM
  202.  
  203.                 MACRO
  204.                 FSUBS96
  205.                 MOVE.W        #FFSGL+FFEXT96+FOSUB,-(SP)
  206.                 _FP68K
  207.                 ENDM
  208.  
  209.                 MACRO
  210.                 FSUBC96
  211.                 MOVE.W        #FFCOMP+FFEXT96+FOSUB,-(SP)
  212.                 _FP68K
  213.                 ENDM
  214.  
  215.                 MACRO
  216.                 FSUBI96
  217.                 MOVE.W        #FFINT+FFEXT96+FOSUB,-(SP)
  218.                 _FP68K
  219.                 ENDM
  220.  
  221.                 MACRO
  222.                 FSUBL96
  223.                 MOVE.W        #FFLNG+FFEXT96+FOSUB,-(SP)
  224.                 _FP68K
  225.                 ENDM
  226.  
  227. ;———————————————————————————————————————————————————————————
  228. ; Multiplication.
  229. ;———————————————————————————————————————————————————————————
  230. ; 80-bit extended format
  231.                 MACRO
  232.                 FMULX
  233.                 MOVE.W        #FFEXT+FOMUL,-(SP)
  234.                 _FP68K
  235.                 ENDM
  236.  
  237.                 MACRO
  238.                 FMULD
  239.                 MOVE.W        #FFDBL+FOMUL,-(SP)
  240.                 _FP68K
  241.                 ENDM
  242.  
  243.                 MACRO
  244.                 FMULS
  245.                 MOVE.W        #FFSGL+FOMUL,-(SP)
  246.                 _FP68K
  247.                 ENDM
  248.  
  249.                 MACRO
  250.                 FMULC
  251.                 MOVE.W        #FFCOMP+FOMUL,-(SP)
  252.                 _FP68K
  253.                 ENDM
  254.  
  255.                 MACRO
  256.                 FMULI
  257.                 MOVE.W        #FFINT+FOMUL,-(SP)
  258.                 _FP68K
  259.                 ENDM
  260.  
  261.                 MACRO
  262.                 FMULL
  263.                 MOVE.W        #FFLNG+FOMUL,-(SP)
  264.                 _FP68K
  265.                 ENDM
  266.  
  267. ; 96-bit extended format
  268.                 MACRO
  269.                 FMULX96
  270.                 MOVE.W        #FFEXT96+FOMUL,-(SP)
  271.                 _FP68K
  272.                 ENDM
  273.  
  274.                 MACRO
  275.                 FMULD96
  276.                 MOVE.W        #FFDBL+FFEXT96+FOMUL,-(SP)
  277.                 _FP68K
  278.                 ENDM
  279.  
  280.                 MACRO
  281.                 FMULS96
  282.                 MOVE.W        #FFSGL+FFEXT96+FOMUL,-(SP)
  283.                 _FP68K
  284.                 ENDM
  285.  
  286.                 MACRO
  287.                 FMULC96
  288.                 MOVE.W        #FFCOMP+FFEXT96+FOMUL,-(SP)
  289.                 _FP68K
  290.                 ENDM
  291.  
  292.                 MACRO
  293.                 FMULI96
  294.                 MOVE.W        #FFINT+FFEXT96+FOMUL,-(SP)
  295.                 _FP68K
  296.                 ENDM
  297.  
  298.                 MACRO
  299.                 FMULL96
  300.                 MOVE.W        #FFLNG+FFEXT96+FOMUL,-(SP)
  301.                 _FP68K
  302.                 ENDM
  303.  
  304. ;———————————————————————————————————————————————————————————
  305. ; Division.
  306. ;———————————————————————————————————————————————————————————
  307. ; 80-bit extended format
  308.                 MACRO
  309.                 FDIVX
  310.                 MOVE.W        #FFEXT+FODIV,-(SP)
  311.                 _FP68K
  312.                 ENDM
  313.  
  314.                 MACRO
  315.                 FDIVD
  316.                 MOVE.W        #FFDBL+FODIV,-(SP)
  317.                 _FP68K
  318.                 ENDM
  319.  
  320.                 MACRO
  321.                 FDIVS
  322.                 MOVE.W        #FFSGL+FODIV,-(SP)
  323.                 _FP68K
  324.                 ENDM
  325.  
  326.                 MACRO
  327.                 FDIVC
  328.                 MOVE.W        #FFCOMP+FODIV,-(SP)
  329.                 _FP68K
  330.                 ENDM
  331.  
  332.                 MACRO
  333.                 FDIVI
  334.                 MOVE.W        #FFINT+FODIV,-(SP)
  335.                 _FP68K
  336.                 ENDM
  337.  
  338.                 MACRO
  339.                 FDIVL
  340.                 MOVE.W        #FFLNG+FODIV,-(SP)
  341.                 _FP68K
  342.                 ENDM
  343.  
  344. ; 96-bit extended format
  345.                 MACRO
  346.                 FDIVX96
  347.                 MOVE.W        #FFEXT96+FODIV,-(SP)
  348.                 _FP68K
  349.                 ENDM
  350.  
  351.                 MACRO
  352.                 FDIVD96
  353.                 MOVE.W        #FFDBL+FFEXT96+FODIV,-(SP)
  354.                 _FP68K
  355.                 ENDM
  356.  
  357.                 MACRO
  358.                 FDIVS96
  359.                 MOVE.W        #FFSGL+FFEXT96+FODIV,-(SP)
  360.                 _FP68K
  361.                 ENDM
  362.  
  363.                 MACRO
  364.                 FDIVC96
  365.                 MOVE.W        #FFCOMP+FFEXT96+FODIV,-(SP)
  366.                 _FP68K
  367.                 ENDM
  368.  
  369.                 MACRO
  370.                 FDIVI96
  371.                 MOVE.W        #FFINT+FFEXT96+FODIV,-(SP)
  372.                 _FP68K
  373.                 ENDM
  374.  
  375.                 MACRO
  376.                 FDIVL96
  377.                 MOVE.W        #FFLNG+FFEXT96+FODIV,-(SP)
  378.                 _FP68K
  379.                 ENDM
  380.  
  381. ;———————————————————————————————————————————————————————————
  382. ; Square root.
  383. ;———————————————————————————————————————————————————————————
  384. ; 80-bit extended format
  385.                 MACRO
  386.                 FSQRTX
  387.                 MOVE.W        #FOSQRT,-(SP)
  388.                 _FP68K
  389.                 ENDM
  390.  
  391. ; 96-bit extended format
  392.                 MACRO
  393.                 FSQRTX96
  394.                 MOVE.W        #FFEXT96+FOSQRT,-(SP)
  395.                 _FP68K
  396.                 ENDM
  397.  
  398. ;———————————————————————————————————————————————————————————
  399. ; Round to integer, according to the current rounding mode.
  400. ;———————————————————————————————————————————————————————————
  401. ; 80-bit extended format
  402.                 MACRO
  403.                 FRINTX
  404.                 MOVE.W        #FORTI,-(SP)
  405.                 _FP68K
  406.                 ENDM
  407.  
  408. ; 96-bit extended format
  409.                 MACRO
  410.                 FRINTX96
  411.                 MOVE.W        #FFEXT96+FORTI,-(SP)
  412.                 _FP68K
  413.                 ENDM
  414.  
  415. ;———————————————————————————————————————————————————————————
  416. ; Truncate to integer, using round toward zero.
  417. ;———————————————————————————————————————————————————————————
  418. ; 80-bit extended format
  419.                 MACRO
  420.                 FTINTX
  421.                 MOVE.W        #FOTTI,-(SP)
  422.                 _FP68K
  423.                 ENDM
  424.  
  425. ; 96-bit extended format
  426.                 MACRO
  427.                 FTINTX96
  428.                 MOVE.W        #FFEXT96+FOTTI,-(SP)
  429.                 _FP68K
  430.                 ENDM
  431.  
  432. ;———————————————————————————————————————————————————————————
  433. ; Remainder.
  434. ;———————————————————————————————————————————————————————————
  435. ; 80-bit extended format
  436.                 MACRO
  437.                 FREMX
  438.                 MOVE.W        #FFEXT+FOREM,-(SP)
  439.                 _FP68K
  440.                 ENDM
  441.  
  442.                 MACRO
  443.                 FREMD
  444.                 MOVE.W        #FFDBL+FOREM,-(SP)
  445.                 _FP68K
  446.                 ENDM
  447.  
  448.                 MACRO
  449.                 FREMS
  450.                 MOVE.W        #FFSGL+FOREM,-(SP)
  451.                 _FP68K
  452.                 ENDM
  453.  
  454.                 MACRO
  455.                 FREMC
  456.                 MOVE.W        #FFCOMP+FOREM,-(SP)
  457.                 _FP68K
  458.                 ENDM
  459.  
  460.                 MACRO
  461.                 FREMI
  462.                 MOVE.W        #FFINT+FOREM,-(SP)
  463.                 _FP68K
  464.                 ENDM
  465.  
  466.                 MACRO
  467.                 FREML
  468.                 MOVE.W        #FFLNG+FOREM,-(SP)
  469.                 _FP68K
  470.                 ENDM
  471.  
  472. ; 96-bit extended format
  473.                 MACRO
  474.                 FREMX96
  475.                 MOVE.W        #FFEXT96+FOREM,-(SP)
  476.                 _FP68K
  477.                 ENDM
  478.  
  479.                 MACRO
  480.                 FREMD96
  481.                 MOVE.W        #FFDBL+FFEXT96+FOREM,-(SP)
  482.                 _FP68K
  483.                 ENDM
  484.  
  485.                 MACRO
  486.                 FREMS96
  487.                 MOVE.W        #FFSGL+FFEXT96+FOREM,-(SP)
  488.                 _FP68K
  489.                 ENDM
  490.  
  491.                 MACRO
  492.                 FREMC96
  493.                 MOVE.W        #FFCOMP+FFEXT96+FOREM,-(SP)
  494.                 _FP68K
  495.                 ENDM
  496.  
  497.                 MACRO
  498.                 FREMI96
  499.                 MOVE.W        #FFINT+FFEXT96+FOREM,-(SP)
  500.                 _FP68K
  501.                 ENDM
  502.  
  503.                 MACRO
  504.                 FREML96
  505.                 MOVE.W        #FFLNG+FFEXT96+FOREM,-(SP)
  506.                 _FP68K
  507.                 ENDM
  508.  
  509. ;———————————————————————————————————————————————————————————
  510. ; Logb.
  511. ;———————————————————————————————————————————————————————————
  512. ; 80-bit extended format
  513.                 MACRO
  514.                 FLOGBX
  515.                 MOVE.W        #FOLOGB,-(SP)
  516.                 _FP68K
  517.                 ENDM
  518.  
  519. ; 96-bit extended format
  520.                 MACRO
  521.                 FLOGBX96
  522.                 MOVE.W        #FFEXT96+FOLOGB,-(SP)
  523.                 _FP68K
  524.                 ENDM
  525.  
  526. ;———————————————————————————————————————————————————————————
  527. ; Scalb.
  528. ;———————————————————————————————————————————————————————————
  529. ; 80-bit extended format
  530.                 MACRO
  531.                 FSCALBX
  532.                 MOVE.W        #FFINT+FOSCALB,-(SP)
  533.                 _FP68K
  534.                 ENDM
  535.  
  536. ; 96-bit extended format
  537.                 MACRO
  538.                 FSCALBX96
  539.                 MOVE.W        #FFINT+FFEXT96+FOSCALB,-(SP)
  540.                 _FP68K
  541.                 ENDM
  542.  
  543. ;———————————————————————————————————————————————————————————
  544. ; Copy-sign.
  545. ;———————————————————————————————————————————————————————————
  546. ; 80-bit extended format
  547.                 MACRO
  548.                 FCPYSGNX
  549.                 MOVE.W        #FOCPYSGN,-(SP)
  550.                 _FP68K
  551.                 ENDM
  552.  
  553. ; 96-bit extended format
  554.                 MACRO
  555.                 FCPYSGNX96
  556.                 MOVE.W        #FFEXT96+FOCPYSGN,-(SP)
  557.                 _FP68K
  558.                 ENDM
  559.  
  560. ;———————————————————————————————————————————————————————————
  561. ; Negate.
  562. ;———————————————————————————————————————————————————————————
  563. ; 80-bit extended format
  564.                 MACRO
  565.                 FNEGX
  566.                 MOVE.W        #FONEG,-(SP)
  567.                 _FP68K
  568.                 ENDM
  569.  
  570. ; 96-bit extended format
  571.                 MACRO
  572.                 FNEGX96
  573.                 MOVE.W        #FFEXT96+FONEG,-(SP)
  574.                 _FP68K
  575.                 ENDM
  576.  
  577. ;———————————————————————————————————————————————————————————
  578. ; Absolute value.
  579. ;———————————————————————————————————————————————————————————
  580. ; 80-bit extended format
  581.                 MACRO
  582.                 FABSX
  583.                 MOVE.W        #FOABS,-(SP)
  584.                 _FP68K
  585.                 ENDM
  586.  
  587. ; 96-bit extended format
  588.                 MACRO
  589.                 FABSX96
  590.                 MOVE.W        #FFEXT96+FOABS,-(SP)
  591.                 _FP68K
  592.                 ENDM
  593.  
  594. ;———————————————————————————————————————————————————————————
  595. ; Next-after. NOTE: both operands are of the same
  596. ; format, as specified by the usual suffix.
  597. ;———————————————————————————————————————————————————————————
  598.                 MACRO
  599.                 FNEXTS
  600.                 MOVE.W        #FFSGL+FONEXT,-(SP)
  601.                 _FP68K
  602.                 ENDM
  603.  
  604.                 MACRO
  605.                 FNEXTD
  606.                 MOVE.W        #FFDBL+FONEXT,-(SP)
  607.                 _FP68K
  608.                 ENDM
  609.  
  610. ; 80-bit extended format
  611.                 MACRO
  612.                 FNEXTX
  613.                 MOVE.W        #FFEXT+FONEXT,-(SP)
  614.                 _FP68K
  615.                 ENDM
  616.  
  617. ; 96-bit extended format
  618.                 MACRO
  619.                 FNEXTX96
  620.                 MOVE.W        #FFEXT96+FONEXT,-(SP)
  621.                 _FP68K
  622.                 ENDM
  623.  
  624. ;———————————————————————————————————————————————————————————
  625. ; Conversion to 80-bit extended.
  626. ;———————————————————————————————————————————————————————————
  627.                 MACRO
  628.                 FX2X
  629.                 MOVE.W        #FFEXT+FOZ2X,-(SP)
  630.                 _FP68K
  631.                 ENDM
  632.  
  633.                 MACRO
  634.                 FD2X
  635.                 MOVE.W        #FFDBL+FOZ2X,-(SP)
  636.                 _FP68K
  637.                 ENDM
  638.  
  639.                 MACRO
  640.                 FS2X
  641.                 MOVE.W        #FFSGL+FOZ2X,-(SP)
  642.                 _FP68K
  643.                 ENDM
  644.  
  645.                 MACRO
  646.                 FI2X
  647.                 MOVE.W        #FFINT+FOZ2X,-(SP)
  648.                 _FP68K
  649.                 ENDM
  650.  
  651.                 MACRO
  652.                 FL2X
  653.                 MOVE.W        #FFLNG+FOZ2X,-(SP)
  654.                 _FP68K
  655.                 ENDM
  656.  
  657.                 MACRO
  658.                 FC2X
  659.                 MOVE.W        #FFCOMP+FOZ2X,-(SP)
  660.                 _FP68K
  661.                 ENDM
  662.  
  663. ;———————————————————————————————————————————————————————————
  664. ; Conversion to 96-bit extended.
  665. ;———————————————————————————————————————————————————————————
  666.                 MACRO
  667.                 FX2X96
  668.                 MOVE.W        #FFEXT96+FOZ2X,-(SP)
  669.                 _FP68K
  670.                 ENDM
  671.  
  672.                 MACRO
  673.                 FD2X96
  674.                 MOVE.W        #FFDBL+FFEXT96+FOZ2X,-(SP)
  675.                 _FP68K
  676.                 ENDM
  677.  
  678.                 MACRO
  679.                 FS2X96
  680.                 MOVE.W        #FFSGL+FFEXT96+FOZ2X,-(SP)
  681.                 _FP68K
  682.                 ENDM
  683.  
  684.                 MACRO
  685.                 FI2X96
  686.                 MOVE.W        #FFINT+FFEXT96+FOZ2X,-(SP)
  687.                 _FP68K
  688.                 ENDM
  689.  
  690.                 MACRO
  691.                 FL2X96
  692.                 MOVE.W        #FFLNG+FFEXT96+FOZ2X,-(SP)
  693.                 _FP68K
  694.                 ENDM
  695.  
  696.                 MACRO
  697.                 FC2X96
  698.                 MOVE.W        #FFCOMP+FFEXT96+FOZ2X,-(SP)
  699.                 _FP68K
  700.                 ENDM
  701.  
  702. ;———————————————————————————————————————————————————————————
  703. ; Conversion from 80-bit extended.
  704. ;———————————————————————————————————————————————————————————
  705.                 MACRO
  706.                 FX2D
  707.                 MOVE.W        #FFDBL+FOX2Z,-(SP)
  708.                 _FP68K
  709.                 ENDM
  710.  
  711.                 MACRO
  712.                 FX2S
  713.                 MOVE.W        #FFSGL+FOX2Z,-(SP)
  714.                 _FP68K
  715.                 ENDM
  716.  
  717.                 MACRO
  718.                 FX2I
  719.                 MOVE.W        #FFINT+FOX2Z,-(SP)
  720.                 _FP68K
  721.                 ENDM
  722.  
  723.                 MACRO
  724.                 FX2L
  725.                 MOVE.W        #FFLNG+FOX2Z,-(SP)
  726.                 _FP68K
  727.                 ENDM
  728.  
  729.                 MACRO
  730.                 FX2C
  731.                 MOVE.W        #FFCOMP+FOX2Z,-(SP)
  732.                 _FP68K
  733.                 ENDM
  734.  
  735. ;———————————————————————————————————————————————————————————
  736. ; Conversion from 96-bit extended.
  737. ;———————————————————————————————————————————————————————————
  738.                 MACRO
  739.                 FX2D96
  740.                 MOVE.W        #FFDBL+FFEXT96+FOX2Z,-(SP)
  741.                 _FP68K
  742.                 ENDM
  743.  
  744.                 MACRO
  745.                 FX2S96
  746.                 MOVE.W        #FFSGL+FFEXT96+FOX2Z,-(SP)
  747.                 _FP68K
  748.                 ENDM
  749.  
  750.                 MACRO
  751.                 FX2I96
  752.                 MOVE.W        #FFINT+FFEXT96+FOX2Z,-(SP)
  753.                 _FP68K
  754.                 ENDM
  755.  
  756.                 MACRO
  757.                 FX2L96
  758.                 MOVE.W        #FFLNG+FFEXT96+FOX2Z,-(SP)
  759.                 _FP68K
  760.                 ENDM
  761.  
  762.                 MACRO
  763.                 FX2C96
  764.                 MOVE.W        #FFCOMP+FFEXT96+FOX2Z,-(SP)
  765.                 _FP68K
  766.                 ENDM
  767.  
  768. ;———————————————————————————————————————————————————————————
  769. ; Binary to decimal conversion.
  770. ;———————————————————————————————————————————————————————————
  771. ; 80-bit extended format
  772.                 MACRO
  773.                 FX2DEC
  774.                 MOVE.W        #FFEXT+FOB2D,-(SP)
  775.                 _FP68K
  776.                 ENDM
  777.  
  778. ; 96-bit extended format
  779.                 MACRO
  780.                 FX2DEC96
  781.                 MOVE.W        #FFEXT96+FOB2D,-(SP)
  782.                 _FP68K
  783.                 ENDM
  784.  
  785.                 MACRO
  786.                 FD2DEC
  787.                 MOVE.W        #FFDBL+FOB2D,-(SP)
  788.                 _FP68K
  789.                 ENDM
  790.  
  791.                 MACRO
  792.                 FS2DEC
  793.                 MOVE.W        #FFSGL+FOB2D,-(SP)
  794.                 _FP68K
  795.                 ENDM
  796.  
  797.                 MACRO
  798.                 FC2DEC
  799.                 MOVE.W        #FFCOMP+FOB2D,-(SP)
  800.                 _FP68K
  801.                 ENDM
  802.  
  803.                 MACRO
  804.                 FI2DEC
  805.                 MOVE.W        #FFINT+FOB2D,-(SP)
  806.                 _FP68K
  807.                 ENDM
  808.  
  809.                 MACRO
  810.                 FL2DEC
  811.                 MOVE.W        #FFLNG+FOB2D,-(SP)
  812.                 _FP68K
  813.                 ENDM
  814.  
  815. ;———————————————————————————————————————————————————————————
  816. ; Decimal to binary conversion.
  817. ;———————————————————————————————————————————————————————————
  818. ; 80-bit extended format
  819.                 MACRO
  820.                 FDEC2X
  821.                 MOVE.W        #FFEXT+FOD2B,-(SP)
  822.                 _FP68K
  823.                 ENDM
  824.  
  825. ; 96-bit extended format
  826.                 MACRO
  827.                 FDEC2X96
  828.                 MOVE.W        #FFEXT96+FOD2B,-(SP)
  829.                 _FP68K
  830.                 ENDM
  831.  
  832.                 MACRO
  833.                 FDEC2D
  834.                 MOVE.W        #FFDBL+FOD2B,-(SP)
  835.                 _FP68K
  836.                 ENDM
  837.  
  838.                 MACRO
  839.                 FDEC2S
  840.                 MOVE.W        #FFSGL+FOD2B,-(SP)
  841.                 _FP68K
  842.                 ENDM
  843.  
  844.                 MACRO
  845.                 FDEC2C
  846.                 MOVE.W        #FFCOMP+FOD2B,-(SP)
  847.                 _FP68K
  848.                 ENDM
  849.  
  850.                 MACRO
  851.                 FDEC2I
  852.                 MOVE.W        #FFINT+FOD2B,-(SP)
  853.                 _FP68K
  854.                 ENDM
  855.  
  856.                 MACRO
  857.                 FDEC2L
  858.                 MOVE.W        #FFLNG+FOD2B,-(SP)
  859.                 _FP68K
  860.                 ENDM
  861.  
  862. ;———————————————————————————————————————————————————————————
  863. ; Compare, not signaling invalid on unordered.
  864. ;———————————————————————————————————————————————————————————
  865. ; 80-bit extended format
  866.                 MACRO
  867.                 FCMPX
  868.                 MOVE.W        #FFEXT+FOCMP,-(SP)
  869.                 _FP68K
  870.                 ENDM
  871.  
  872.                 MACRO
  873.                 FCMPD
  874.                 MOVE.W        #FFDBL+FOCMP,-(SP)
  875.                 _FP68K
  876.                 ENDM
  877.  
  878.                 MACRO
  879.                 FCMPS
  880.                 MOVE.W        #FFSGL+FOCMP,-(SP)
  881.                 _FP68K
  882.                 ENDM
  883.  
  884.                 MACRO
  885.                 FCMPC
  886.                 MOVE.W        #FFCOMP+FOCMP,-(SP)
  887.                 _FP68K
  888.                 ENDM
  889.  
  890.                 MACRO
  891.                 FCMPI
  892.                 MOVE.W        #FFINT+FOCMP,-(SP)
  893.                 _FP68K
  894.                 ENDM
  895.  
  896.                 MACRO
  897.                 FCMPL
  898.                 MOVE.W        #FFLNG+FOCMP,-(SP)
  899.                 _FP68K
  900.                 ENDM
  901.  
  902. ; 96-bit extended format
  903.                 MACRO
  904.                 FCMPX96
  905.                 MOVE.W        #FFEXT96+FOCMP,-(SP)
  906.                 _FP68K
  907.                 ENDM
  908.  
  909.                 MACRO
  910.                 FCMPD96
  911.                 MOVE.W        #FFDBL+FFEXT96+FOCMP,-(SP)
  912.                 _FP68K
  913.                 ENDM
  914.  
  915.                 MACRO
  916.                 FCMPS96
  917.                 MOVE.W        #FFSGL+FFEXT96+FOCMP,-(SP)
  918.                 _FP68K
  919.                 ENDM
  920.  
  921.                 MACRO
  922.                 FCMPC96
  923.                 MOVE.W        #FFCOMP+FFEXT96+FOCMP,-(SP)
  924.                 _FP68K
  925.                 ENDM
  926.  
  927.                 MACRO
  928.                 FCMPI96
  929.                 MOVE.W        #FFINT+FFEXT96+FOCMP,-(SP)
  930.                 _FP68K
  931.                 ENDM
  932.  
  933.                 MACRO
  934.                 FCMPL96
  935.                 MOVE.W        #FFLNG+FFEXT96+FOCMP,-(SP)
  936.                 _FP68K
  937.                 ENDM
  938.  
  939. ;———————————————————————————————————————————————————————————
  940. ; Compare, signaling invalid on unordered.
  941. ;———————————————————————————————————————————————————————————
  942. ; 80-bit extended format
  943.                 MACRO
  944.                 FCPXX
  945.                 MOVE.W        #FFEXT+FOCPX,-(SP)
  946.                 _FP68K
  947.                 ENDM
  948.  
  949.                 MACRO
  950.                 FCPXD
  951.                 MOVE.W        #FFDBL+FOCPX,-(SP)
  952.                 _FP68K
  953.                 ENDM
  954.  
  955.                 MACRO
  956.                 FCPXS
  957.                 MOVE.W        #FFSGL+FOCPX,-(SP)
  958.                 _FP68K
  959.                 ENDM
  960.  
  961.                 MACRO
  962.                 FCPXC
  963.                 MOVE.W        #FFCOMP+FOCPX,-(SP)
  964.                 _FP68K
  965.                 ENDM
  966.  
  967.                 MACRO
  968.                 FCPXI
  969.                 MOVE.W        #FFINT+FOCPX,-(SP)
  970.                 _FP68K
  971.                 ENDM
  972.  
  973.                 MACRO
  974.                 FCPXL
  975.                 MOVE.W        #FFLNG+FOCPX,-(SP)
  976.                 _FP68K
  977.                 ENDM
  978.  
  979. ; 96-bit extended format
  980.                 MACRO
  981.                 FCPXX96
  982.                 MOVE.W        #FFEXT96+FOCPX,-(SP)
  983.                 _FP68K
  984.                 ENDM
  985.  
  986.                 MACRO
  987.                 FCPXD96
  988.                 MOVE.W        #FFDBL+FFEXT96+FOCPX,-(SP)
  989.                 _FP68K
  990.                 ENDM
  991.  
  992.                 MACRO
  993.                 FCPXS96
  994.                 MOVE.W        #FFSGL+FFEXT96+FOCPX,-(SP)
  995.                 _FP68K
  996.                 ENDM
  997.  
  998.                 MACRO
  999.                 FCPXC96
  1000.                 MOVE.W        #FFCOMP+FFEXT96+FOCPX,-(SP)
  1001.                 _FP68K
  1002.                 ENDM
  1003.  
  1004.                 MACRO
  1005.                 FCPXI96
  1006.                 MOVE.W        #FFINT+FFEXT96+FOCPX,-(SP)
  1007.                 _FP68K
  1008.                 ENDM
  1009.  
  1010.                 MACRO
  1011.                 FCPXL96
  1012.                 MOVE.W        #FFLNG+FFEXT96+FOCPX,-(SP)
  1013.                 _FP68K
  1014.                 ENDM
  1015.  
  1016. ;———————————————————————————————————————————————————————————
  1017. ; The following defines a set of so-called floating
  1018. ; branches. They presume that an appropriate compare
  1019. ; operation, FCMPz, FCMPz96, FCPXz or FCPXz96, precedes.
  1020. ;———————————————————————————————————————————————————————————
  1021.                 MACRO
  1022.                 FBEQL
  1023.                 BEQ         &SYSLIST[1]
  1024.                 ENDM
  1025.  
  1026.                 MACRO
  1027.                 FBLTL
  1028.                 BCS         &SYSLIST[1]
  1029.                 ENDM
  1030.  
  1031.                 MACRO
  1032.                 FBLEL
  1033.                 BLS         &SYSLIST[1]
  1034.                 ENDM
  1035.  
  1036.                 MACRO
  1037.                 FBGTL
  1038.                 BGT         &SYSLIST[1]
  1039.                 ENDM
  1040.  
  1041.                 MACRO
  1042.                 FBGEL
  1043.                 BGE         &SYSLIST[1]
  1044.                 ENDM
  1045.  
  1046.                 MACRO
  1047.                 FBULTL
  1048.                 BLT         &SYSLIST[1]
  1049.                 ENDM
  1050.  
  1051.                 MACRO
  1052.                 FBULEL
  1053.                 BLE         &SYSLIST[1]
  1054.                 ENDM
  1055.  
  1056.                 MACRO
  1057.                 FBUGTL
  1058.                 BHI         &SYSLIST[1]
  1059.                 ENDM
  1060.  
  1061.                 MACRO
  1062.                 FBUGEL
  1063.                 BCC         &SYSLIST[1]
  1064.                 ENDM
  1065.  
  1066.                 MACRO
  1067.                 FBUL
  1068.                 BVS         &SYSLIST[1]
  1069.                 ENDM
  1070.  
  1071.                 MACRO
  1072.                 FBOL
  1073.                 BVC         &SYSLIST[1]
  1074.                 ENDM
  1075.  
  1076.                 MACRO
  1077.                 FBNEL
  1078.                 BNE         &SYSLIST[1]
  1079.                 ENDM
  1080.  
  1081.                 MACRO
  1082.                 FBUEL
  1083.                 BEQ         &SYSLIST[1]
  1084.                 BVS         &SYSLIST[1]
  1085.                 ENDM
  1086.  
  1087.                 MACRO
  1088.                 FBLGL
  1089.                 BCS         &SYSLIST[1]
  1090.                 BGT         &SYSLIST[1]
  1091.                 ENDM
  1092.  
  1093. ;———————————————————————————————————————————————————————————
  1094. ; Short branch versions.
  1095. ;———————————————————————————————————————————————————————————
  1096.                 MACRO
  1097.                 FBEQS
  1098.                 BEQ.S        &SYSLIST[1]
  1099.                 ENDM
  1100.  
  1101.                 MACRO
  1102.                 FBLTS
  1103.                 BCS.S        &SYSLIST[1]
  1104.                 ENDM
  1105.  
  1106.                 MACRO
  1107.                 FBLES
  1108.                 BLS.S        &SYSLIST[1]
  1109.                 ENDM
  1110.  
  1111.                 MACRO
  1112.                 FBGTS
  1113.                 BGT.S        &SYSLIST[1]
  1114.                 ENDM
  1115.  
  1116.                 MACRO
  1117.                 FBGES
  1118.                 BGE.S        &SYSLIST[1]
  1119.                 ENDM
  1120.  
  1121.                 MACRO
  1122.                 FBULTS
  1123.                 BLT.S        &SYSLIST[1]
  1124.                 ENDM
  1125.  
  1126.                 MACRO
  1127.                 FBULES
  1128.                 BLE.S        &SYSLIST[1]
  1129.                 ENDM
  1130.  
  1131.                 MACRO
  1132.                 FBUGTS
  1133.                 BHI.S        &SYSLIST[1]
  1134.                 ENDM
  1135.  
  1136.                 MACRO
  1137.                 FBUGES
  1138.                 BCC.S        &SYSLIST[1]
  1139.                 ENDM
  1140.  
  1141.                 MACRO
  1142.                 FBUS
  1143.                 BVS.S        &SYSLIST[1]
  1144.                 ENDM
  1145.  
  1146.                 MACRO
  1147.                 FBOS
  1148.                 BVC.S        &SYSLIST[1]
  1149.                 ENDM
  1150.  
  1151.                 MACRO
  1152.                 FBNES
  1153.                 BNE.S        &SYSLIST[1]
  1154.                 ENDM
  1155.  
  1156.                 MACRO
  1157.                 FBUES
  1158.                 BEQ.S        &SYSLIST[1]
  1159.                 BVS.S        &SYSLIST[1]
  1160.                 ENDM
  1161.  
  1162.                 MACRO
  1163.                 FBLGS
  1164.                 BCS.S        &SYSLIST[1]
  1165.                 BGT.S        &SYSLIST[1]
  1166.                 ENDM
  1167.  
  1168. ;———————————————————————————————————————————————————————————
  1169. ; Class and sign inquiries.
  1170. ;———————————————————————————————————————————————————————————
  1171. FCSNAN            EQU         1                        ; signaling NAN
  1172. FCQNAN            EQU         2                        ; quiet NAN
  1173. FCINF            EQU         3                        ; infinity
  1174. FCZERO            EQU         4                        ; zero
  1175. FCNORM            EQU         5                        ; normal number
  1176. FCDENORM        EQU         6                        ; denormal number
  1177.  
  1178.                 MACRO
  1179.                 FCLASSC
  1180.                 MOVE.W        #FFCOMP+FOCLASS,-(SP)
  1181.                 _FP68K
  1182.                 ENDM
  1183.  
  1184.                 MACRO
  1185.                 FCLASSS
  1186.                 MOVE.W        #FFSGL+FOCLASS,-(SP)
  1187.                 _FP68K
  1188.                 ENDM
  1189.  
  1190.                 MACRO
  1191.                 FCLASSD
  1192.                 MOVE.W        #FFDBL+FOCLASS,-(SP)
  1193.                 _FP68K
  1194.                 ENDM
  1195.  
  1196. ; 80-bit extended format
  1197.                 MACRO
  1198.                 FCLASSX
  1199.                 MOVE.W        #FFEXT+FOCLASS,-(SP)
  1200.                 _FP68K
  1201.                 ENDM
  1202.  
  1203. ; 96-bit extended format
  1204.                 MACRO
  1205.                 FCLASSX96
  1206.                 MOVE.W        #FFEXT96+FOCLASS,-(SP)
  1207.                 _FP68K
  1208.                 ENDM
  1209.  
  1210. ;———————————————————————————————————————————————————————————
  1211. ; Bit indexes for bytes of floating point environment word.
  1212. ;———————————————————————————————————————————————————————————
  1213. FBINVALID        EQU         0                        ; invalid operation
  1214. FBUFLOW         EQU         1                        ; underflow
  1215. FBOFLOW         EQU         2                        ; overflow
  1216. FBDIVZER        EQU         3                        ; division by zero
  1217. FBINEXACT        EQU         4                        ; inexact
  1218. FBRNDLO         EQU         5                        ; low bit of rounding mode
  1219. FBRNDHI         EQU         6                        ; high bit of rounding mode
  1220. FBLSTRND        EQU         7                        ; last round result bit
  1221. FBDBL            EQU         5                        ; double precision control
  1222. FBSGL            EQU         6                        ; single precision control
  1223.  
  1224. ;———————————————————————————————————————————————————————————
  1225. ; Get and set environment.
  1226. ;———————————————————————————————————————————————————————————
  1227.                 MACRO
  1228.                 FGETENV
  1229.                 MOVE.W        #FOGETENV,-(SP)
  1230.                 _FP68K
  1231.                 ENDM
  1232.  
  1233.                 MACRO
  1234.                 FSETENV
  1235.                 MOVE.W        #FOSETENV,-(SP)
  1236.                 _FP68K
  1237.                 ENDM
  1238.  
  1239. ;———————————————————————————————————————————————————————————
  1240. ; Test and set exception.
  1241. ;———————————————————————————————————————————————————————————
  1242.                 MACRO
  1243.                 FTESTXCP
  1244.                 MOVE.W        #FOTESTXCP,-(SP)
  1245.                 _FP68K
  1246.                 ENDM
  1247.  
  1248.                 MACRO
  1249.                 FSETXCP
  1250.                 MOVE.W        #FOSETXCP,-(SP)
  1251.                 _FP68K
  1252.                 ENDM
  1253.  
  1254. ;———————————————————————————————————————————————————————————
  1255. ; Procedure entry and exit.
  1256. ;———————————————————————————————————————————————————————————
  1257.                 MACRO
  1258.                 FPROCENTRY
  1259.                 MOVE.W        #FOPROCENTRY,-(SP)
  1260.                 _FP68K
  1261.                 ENDM
  1262.  
  1263.                 MACRO
  1264.                 FPROCEXIT
  1265.                 MOVE.W        #FOPROCEXIT,-(SP)
  1266.                 _FP68K
  1267.                 ENDM
  1268.  
  1269. ;———————————————————————————————————————————————————————————
  1270. ; Get and set halt vector.
  1271. ;———————————————————————————————————————————————————————————
  1272.                 MACRO
  1273.                 FGETHV
  1274.                 MOVE.W        #FOGETHV,-(SP)
  1275.                 _FP68K
  1276.                 ENDM
  1277.  
  1278.                 MACRO
  1279.                 FSETHV
  1280.                 MOVE.W        #FOSETHV,-(SP)
  1281.                 _FP68K
  1282.                 ENDM
  1283.  
  1284.  
  1285.  
  1286. ;———————————————————————————————————————————————————————————
  1287. ; Elementary function operation code masks.
  1288. ;———————————————————————————————————————————————————————————
  1289. ELEXT96            EQU            $0080                    ; 96-bit extended format
  1290. FOLNX            EQU         $0000                    ; base-e log
  1291. FOLOG2X         EQU         $0002                    ; base-2 log
  1292. FOLN1X            EQU         $0004                    ; ln (1 + x)
  1293. FOLOG21X        EQU         $0006                    ; log2 (1 + x)
  1294. FOEXPX            EQU         $0008                    ; base-e exponential
  1295. FOEXP2X         EQU         $000A                    ; base-2 exponential
  1296. FOEXP1X         EQU         $000C                    ; exp (x) - 1
  1297. FOEXP21X        EQU         $000E                    ; exp2 (x) - 1
  1298. FOXPWRI         EQU         $8010                    ; integer exponentiation
  1299. FOXPWRY         EQU         $8012                    ; general exponentiation
  1300. FOCOMPOUND        EQU         $C014                    ; compound
  1301. FOANNUITY        EQU         $C016                    ; annuity
  1302. FOSINX            EQU         $0018                    ; sine
  1303. FOCOSX            EQU         $001A                    ; cosine
  1304. FOTANX            EQU         $001C                    ; tangent
  1305. FOATANX         EQU         $001E                    ; arctangent
  1306. FORANDX         EQU         $0020                    ; random
  1307.  
  1308. ;———————————————————————————————————————————————————————————
  1309. ; Elementary functions.
  1310. ;———————————————————————————————————————————————————————————
  1311. ; 80-bit extended format
  1312.                 MACRO
  1313.                 FLNX                                ; base-e log
  1314.                 MOVE.W        #FOLNX,-(SP)
  1315.                 _ELEMS68K
  1316.                 ENDM
  1317.  
  1318.                 MACRO
  1319.                 FLOG2X                                ; base-2 log
  1320.                 MOVE.W        #FOLOG2X,-(SP)
  1321.                 _ELEMS68K
  1322.                 ENDM
  1323.  
  1324.                 MACRO
  1325.                 FLN1X                                ; ln (1 + x)
  1326.                 MOVE.W        #FOLN1X,-(SP)
  1327.                 _ELEMS68K
  1328.                 ENDM
  1329.  
  1330.                 MACRO
  1331.                 FLOG21X                             ; log2 (1 + x)
  1332.                 MOVE.W        #FOLOG21X,-(SP)
  1333.                 _ELEMS68K
  1334.                 ENDM
  1335.  
  1336.                 MACRO
  1337.                 FEXPX                                ; base-e exponential
  1338.                 MOVE.W        #FOEXPX,-(SP)
  1339.                 _ELEMS68K
  1340.                 ENDM
  1341.  
  1342.                 MACRO
  1343.                 FEXP2X                                ; base-2 exponential
  1344.                 MOVE.W        #FOEXP2X,-(SP)
  1345.                 _ELEMS68K
  1346.                 ENDM
  1347.  
  1348.                 MACRO
  1349.                 FEXP1X                                ; exp (x) - 1
  1350.                 MOVE.W        #FOEXP1X,-(SP)
  1351.                 _ELEMS68K
  1352.                 ENDM
  1353.  
  1354.                 MACRO
  1355.                 FEXP21X                             ; exp2 (x) - 1
  1356.                 MOVE.W        #FOEXP21X,-(SP)
  1357.                 _ELEMS68K
  1358.                 ENDM
  1359.  
  1360.                 MACRO
  1361.                 FXPWRI                                ; integer exponential
  1362.                 MOVE.W        #FOXPWRI,-(SP)
  1363.                 _ELEMS68K
  1364.                 ENDM
  1365.  
  1366.                 MACRO
  1367.                 FXPWRY                                ; general exponential
  1368.                 MOVE.W        #FOXPWRY,-(SP)
  1369.                 _ELEMS68K
  1370.                 ENDM
  1371.  
  1372.                 MACRO
  1373.                 FCOMPOUND                            ; compound
  1374.                 MOVE.W        #FOCOMPOUND,-(SP)
  1375.                 _ELEMS68K
  1376.                 ENDM
  1377.  
  1378.                 MACRO
  1379.                 FANNUITY                            ; annuity
  1380.                 MOVE.W        #FOANNUITY,-(SP)
  1381.                 _ELEMS68K
  1382.                 ENDM
  1383.  
  1384.                 MACRO
  1385.                 FSINX                                ; sine
  1386.                 MOVE.W        #FOSINX,-(SP)
  1387.                 _ELEMS68K
  1388.                 ENDM
  1389.  
  1390.                 MACRO
  1391.                 FCOSX                                ; cosine
  1392.                 MOVE.W        #FOCOSX,-(SP)
  1393.                 _ELEMS68K
  1394.                 ENDM
  1395.  
  1396.                 MACRO
  1397.                 FTANX                                ; tangent
  1398.                 MOVE.W        #FOTANX,-(SP)
  1399.                 _ELEMS68K
  1400.                 ENDM
  1401.  
  1402.                 MACRO
  1403.                 FATANX                                ; arctangent
  1404.                 MOVE.W        #FOATANX,-(SP)
  1405.                 _ELEMS68K
  1406.                 ENDM
  1407.  
  1408.                 MACRO
  1409.                 FRANDX                                ; random number generator
  1410.                 MOVE.W        #FORANDX,-(SP)
  1411.                 _ELEMS68K
  1412.                 ENDM
  1413.  
  1414. ; 96-bit extended format
  1415.                 MACRO
  1416.                 FLNX96                                ; base-e log
  1417.                 MOVE.W        #ELEXT96+FOLNX,-(SP)
  1418.                 _ELEMS68K
  1419.                 ENDM
  1420.  
  1421.                 MACRO
  1422.                 FLOG2X96                                ; base-2 log
  1423.                 MOVE.W        #ELEXT96+FOLOG2X,-(SP)
  1424.                 _ELEMS68K
  1425.                 ENDM
  1426.  
  1427.                 MACRO
  1428.                 FLN1X96                                ; ln (1 + x)
  1429.                 MOVE.W        #ELEXT96+FOLN1X,-(SP)
  1430.                 _ELEMS68K
  1431.                 ENDM
  1432.  
  1433.                 MACRO
  1434.                 FLOG21X96                             ; log2 (1 + x)
  1435.                 MOVE.W        #ELEXT96+FOLOG21X,-(SP)
  1436.                 _ELEMS68K
  1437.                 ENDM
  1438.  
  1439.                 MACRO
  1440.                 FEXPX96                                ; base-e exponential
  1441.                 MOVE.W        #ELEXT96+FOEXPX,-(SP)
  1442.                 _ELEMS68K
  1443.                 ENDM
  1444.  
  1445.                 MACRO
  1446.                 FEXP2X96                                ; base-2 exponential
  1447.                 MOVE.W        #ELEXT96+FOEXP2X,-(SP)
  1448.                 _ELEMS68K
  1449.                 ENDM
  1450.  
  1451.                 MACRO
  1452.                 FEXP1X96                                ; exp (x) - 1
  1453.                 MOVE.W        #ELEXT96+FOEXP1X,-(SP)
  1454.                 _ELEMS68K
  1455.                 ENDM
  1456.  
  1457.                 MACRO
  1458.                 FEXP21X96                             ; exp2 (x) - 1
  1459.                 MOVE.W        #ELEXT96+FOEXP21X,-(SP)
  1460.                 _ELEMS68K
  1461.                 ENDM
  1462.  
  1463.                 MACRO
  1464.                 FXPWRI96                                ; integer exponential
  1465.                 MOVE.W        #ELEXT96+FOXPWRI,-(SP)
  1466.                 _ELEMS68K
  1467.                 ENDM
  1468.  
  1469.                 MACRO
  1470.                 FXPWRY96                                ; general exponential
  1471.                 MOVE.W        #ELEXT96+FOXPWRY,-(SP)
  1472.                 _ELEMS68K
  1473.                 ENDM
  1474.  
  1475.                 MACRO
  1476.                 FCOMPOUND96                            ; compound
  1477.                 MOVE.W        #ELEXT96+FOCOMPOUND,-(SP)
  1478.                 _ELEMS68K
  1479.                 ENDM
  1480.  
  1481.                 MACRO
  1482.                 FANNUITY96                            ; annuity
  1483.                 MOVE.W        #ELEXT96+FOANNUITY,-(SP)
  1484.                 _ELEMS68K
  1485.                 ENDM
  1486.  
  1487.                 MACRO
  1488.                 FSINX96                                ; sine
  1489.                 MOVE.W        #ELEXT96+FOSINX,-(SP)
  1490.                 _ELEMS68K
  1491.                 ENDM
  1492.  
  1493.                 MACRO
  1494.                 FCOSX96                                ; cosine
  1495.                 MOVE.W        #ELEXT96+FOCOSX,-(SP)
  1496.                 _ELEMS68K
  1497.                 ENDM
  1498.  
  1499.                 MACRO
  1500.                 FTANX96                                ; tangent
  1501.                 MOVE.W        #ELEXT96+FOTANX,-(SP)
  1502.                 _ELEMS68K
  1503.                 ENDM
  1504.  
  1505.                 MACRO
  1506.                 FATANX96                                ; arctangent
  1507.                 MOVE.W        #ELEXT96+FOATANX,-(SP)
  1508.                 _ELEMS68K
  1509.                 ENDM
  1510.  
  1511.                 MACRO
  1512.                 FRANDX96                                ; random number generator
  1513.                 MOVE.W        #ELEXT96+FORANDX,-(SP)
  1514.                 _ELEMS68K
  1515.                 ENDM
  1516.  
  1517. ;———————————————————————————————————————————————————————————
  1518. ; Scanner and formatter operation code masks
  1519. ;———————————————————————————————————————————————————————————
  1520.  
  1521. FOPSTR2DEC        EQU         $0002                    ;Pascal string to decimal record
  1522. FOCSTR2DEC        EQU         $0004                    ;C string to decimal record
  1523. FODEC2STR        EQU         $0003                    ;decimal record to Pascal string
  1524.  
  1525. ;———————————————————————————————————————————————————————————
  1526. ; Scanner and formatter functions
  1527. ;———————————————————————————————————————————————————————————
  1528.  
  1529. ;Pascal string to decimal record
  1530.  
  1531.                 MACRO
  1532.                 FPSTR2DEC
  1533.                 MOVE.W        #FOPSTR2DEC, -(SP)
  1534.                 _DecStr68K
  1535.                 ENDM
  1536.  
  1537. ;C string to decimal record
  1538.  
  1539.                 MACRO
  1540.                 FCSTR2DEC
  1541.                 MOVE.W        #FOCSTR2DEC, -(SP)
  1542.                 _DecStr68K
  1543.                 ENDM
  1544.  
  1545. ;decimal record to Pascal string
  1546.  
  1547.                 MACRO
  1548.                 FDEC2STR
  1549.                 MOVE.W        #FODEC2STR, -(SP)
  1550.                 _DecStr68K
  1551.                 ENDM
  1552.  
  1553.  
  1554.  
  1555. ;———————————————————————————————————————————————————————————
  1556. ; NaN codes.
  1557. ;———————————————————————————————————————————————————————————
  1558. NANSQRT         EQU         1                        ; Invalid square root such as sqrt(-1).
  1559. NANADD            EQU         2                        ; Invalid addition such as +INF - +INF.
  1560. NANDIV            EQU         4                        ; Invalid division such as 0/0.
  1561. NANMUL            EQU         8                        ; Invalid multiply such as 0 * INF.
  1562. NANREM            EQU         9                        ; Invalid remainder or mod such as x REM 0.
  1563. NANASCBIN        EQU         17                        ; Attempt to convert invalid ASCII string.
  1564. NANCOMP         EQU         20                        ; Result of converting comp NaN to floating.
  1565. NANZERO         EQU         21                        ; Attempt to create a NaN with a zero code.
  1566. NANTRIG         EQU         33                        ; Invalid argument to trig routine.
  1567. NANINVTRIG        EQU         34                        ; Invalid argument to inverse trig routine.
  1568. NANLOG            EQU         36                        ; Invalid argument to log routine.
  1569. NANPOWER        EQU         37                        ; Invalid argument to x^i or x^y routine.
  1570. NANFINAN        EQU         38                        ; Invalid argument to financial function.
  1571. NANINIT         EQU         255                     ; Uninitialized storage.
  1572.  
  1573.     ENDIF    ; __INCLUDINGSANEMACS__